package com.yiran.task;

import com.yiran.feignclient.Client;
import com.yiran.feihttoclient.ToUserInfoClient;
import com.yiran.pojo.Attendance;
import com.yiran.pojo.User;
import com.yiran.service.AttendanceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Random;

/**
 * 定时任务类
 */
@Component
@Slf4j
public class myTask {

    @Autowired
    private AttendanceService attendanceService;
    //注入http  FeignClient     ToUserInfoClient
    @Autowired
    private ToUserInfoClient client;

    // 每10分钟执行一次这个方法
    @Scheduled(fixedRate = 1 * 60 * 1000) // 10分钟转换为毫秒  每10分钟向数据库写入一个打卡时间，模拟创建打卡记录
    public void myTaskrun(){

        //注意啦  这里要获取用户的ID 需要再另外一个微服务上去调用   需要用到feign
        //这个操是模拟打卡，对数据库做出操作  创建打卡模拟打卡数据。
        List<User> list = client.getUsers();
        if(list==null || list.isEmpty()){
            throw new RuntimeException("没有用户");
        }
        int size = list.size();
        Random random = new Random();
        int i = random.nextInt(size);

        Attendance attendance = new Attendance();
        attendance.setUserId(list.get(i).getId());
        attendance.setClockingTime(LocalDateTime.now());
        attendanceService.save(attendance);
        log.info("{}",attendance);
    }
}
